Async چیست؟
برای اینکه درخصوص تابع Async در جاوااسکریپت یا این که Asynchrony در نرم افزارنویسی توضیح دهم، اولیه می بایست خیلی بهتر در خصوص اپلیکیشننویسی همگام و ناهمگام صحبت بزنم. اپلیکیشننویس برای تایپ کردن کدهای یک شیت از یک سایت شاید مورد نیاز باشد تا یکسری هزار خط کد بنویسد. این کدها هر کدام عملکردها و و ظایف معین ولی متفاوتی دارا هستند. بعضاها مربوط می شوند به درخواستهایی از سرور و برخیها را مرورگر طراحی سایت اخصاصی اعمال مینماید.
برای استفاده کننده و اپلیکیشننویس اصلی میباشد که تمامیی کدها خیلی سریع جاری ساختن شوند و برگه تماما بار گذاری خواهد شد. شاید مخاطب از وب سایت درخواستی داشته باشد یا این که بخواهد کاری در وب سایت اعمال دهد. پس شاید اجرای بعضا کدها نیازمند اخذ سودای از سرور و تعدادی رفتوبرگشت فی مابین سرور و کاغذ باشد. پس، بههمینادله، ترتیب اجرای کدها اصلی میباشد. خیلی از کدها بایستی هم زمان باهم (همگام) اعمال شوند تا مشکلی پیش نیاید و استفاده کننده چشم به راه چیزی نشود.
Synchronous Programming (نرمافزار نویسی همگام)
اپلیکیشننویسی همگام یا این که عملکردهای همگام (Synchronous Operations) یا این که Blocking Programming هنگامی حادثه میفتد که اجرای بی نقص کدهایی (عملکردهایی) جلوی اجرای بقیه کدها را میگیرد. یعنی فرمان اجرای هیچ کد دیگری عملی نمی شود تا یک عمل (Task) به اتمام برسد. در صورتیکه به نمونه خزانه برگردیم، شما بایستی حوصله نمایید تا شغل های ۴ نفر جلویی شما به اتمام برسد و سپس دفعه به شما رسد. آن ۴ نفر جلویی شیوه شمارا بستهاند (بلاک کردهاند). ولی اپلیکیشننویسی همگام کاربردهای خودش را دارااست. مهمترین کاربردش در ساختن Real-time Systems میباشد. گویشهای Argus, Signal and Lustre از لهجههای خاص نرم افزارنویسی همگام میباشند. بقیه گویشها مثل جاوا و پایتون و #C نیز همگام می باشند البته شیوههایی وجود دارااست که بشود کدهای ناهمگام با آنان نوشت.
Asynchronous Programming (اپ نویسی ناهمگام)
اپلیکیشننویسی ناهمگام یا این که عملکردهای ناهمگام (Asynchronous Operations) یا این که Nonblocking Programming نقطهی مقابل اولین میباشد. یعنی یک سری کوشش و کد باهم میتوانند جاری ساختن شوند و خللی در عمل جریان مهم اجرای کدهای نوشته هم ساخت نکنند. دراینجا دیگر دفعه یا این که ترتیب معنی ندارد. گروه کدها بهموازات هم انجام می شوند. مهمترین کاربرد این نوع از اپنویسی هنگامی میباشد که درخواستی از مقرداده (Database) می گردد و فیضای بایستی از آن گرفت. بار گذاری سایری کاغذ و اجرای بقیه کدها متوقف نمیماند تا آن سود رسد و آن عمل به اتمام برسد. فقط لهجه نرمافزارنویسی که ناهمگام میباشد و درهنگام ایفا در مرورگر ناهمگام فعالیت مینماید، گویش جاوااسکریپت میباشد.
جاوااسکریپت و اپ نویسی Asynchronous
جاوااسکریپت (JavaScript or JS) گویش قوی و توانمندی میباشد که کتابخانههای متعددی داراست. فریمورکهای قدرتمندی هم داراست. یکیاز مشهورترین فریمورکهای سمت سرور این لهجه که آنهم به شما قابلیت نرمافزارنویسی ناهمگام میدهد، قاب ورک Node میباشد. ناهمگامی در جاوااسکریپت بدین عامل میباشد که اپلیکیشننویس قادر است ترتیب اجرای توابع (Functions) را در دست گرفتن نماید. یعنی توابع براساسی که نوشته می شوند ممکن میباشد خوانده نشوند. جاوااسکریپت دو قابلیت و امکان اساسی برای در دست گرفتنکردن فرصت اجرای توابع به اپنویس میدهد.
اولین قابلیت و امکان Callbacks در جاوااسکریپت میباشد. اپلیکیشننویس با این قابلیت و امکان میتواند زمانی تابعی جاری ساختن شد از آن تابع بخواهد تا اجرای تابع دیگری را فراخواند (یعنی اجرای دومین آغاز خواهد شد). قابلیت دوم به Async در JS یا این که Async/Await پر اسم و رسم میباشد که با امداد JS Promises عملی می شود.
Async/Await در جاوا اسکریپت
در جاوااسکریپت شیئ (Object) بهاسم Promise وجود داراست که می گردد در درونش دو گروه کد را مکان اعطا کرد. کدهایی که بایستی انجام شوند و فیضای را نتایج نمایند (Producing code) و کدهایی که به آن سود نیاز داراهستند و معطل تصاحب کردن آن سود، که یا این که توفیقآمیز میباشد یا این که یک اشتباه، میمانند (Consuming code).
زمانی کلمه و واژهی Async قبلیاز تابعی نوشته می شود، آن تابع بایستی یک Promise را اعمال نماید و سوداش که معین شد، براساس آن سود کاری اجرا دهد. ولی هنگامی کلمه و واژهی Await گذشتهاز تابعی نوشته میگردد، آن تابع می بایست درانتظار باشد تا فیضی یک شئ مشخص و معلوم گردد و بعد از آن جاری ساختن خواهد شد. برای مثال، اپلیکیشننویس قادر است به دو تابع مجال بدهد. یعنی کد را اینطور بنویسد که تابع دوم ۵ ثانیه بعداز معینشدن سودی Promise اعمال گردد.
گردآوریبندی و فیضگیری
۱. لهجههای نرمافزارنویسی صرفا برای ساخت سایت به کار گیری نمی شوند و کاربردهای مختلفی دارا هستند. بههمینعامل، بایستی خصوصیتهای مختلفی داشته باشند.
۲. لهجههای اپلیکیشننویسی علیالاصول همگام می باشند. البته نرم افزارنویسی همگام در اینترنت طراحی صفحه مشکلاتی برای نرمافزارنویس و مخاطب تولید مینماید. بههمینعامل، زبانی مثل جاوا اسکریپت که اصولا ناهمگام میباشد، برای طراحی وب بسیار اصلی می گردد.
۳. در گویش جاوا اسکریپت تیمای از تجهیزات به کدنویس این توان را میدهد که فرصت اجرای به طور تقریب هر چیزی را تماما در دست گرفتن نماید.
۴. اما قابلیت Async/Await در گویشهای دیگر (مثل پایتون و #C) نیز پیشبینی گردیدهاست.
۵. قطعهکدهایی که در متن نهاده گردیده از وبسایت آموزشی W3schools برداشته گردیدهاست. میتوانید برای رسیدگیی بیشتر از این وبسایت و همینطور تارنما Developer.mozilla.org استعمال نمائید.
۶. ناهمگامبودن JavaScript یک کدام از خصوصیتهایی میباشد کهاین لهجه را کاربردی مینماید. اپنویس شاید نیازی به یادگیری لهجههای توسعه یافتهی دیگر نداشته باشد اما مسلما به جاوا اسکریپت نیاز داراست. بههمینعامل، یادگرفتن جاوااسکریپت از مهمترین سرفصلهای زمان یادگرفتن طراحی وب سایت میباشد.
Async چیست؟
برای اینکه درخصوص تابع Async در جاوااسکریپت یا این که Asynchrony در نرم افزارنویسی توضیح دهم، اولیه می بایست خیلی بهتر در خصوص اپلیکیشننویسی همگام و ناهمگام صحبت بزنم. اپلیکیشننویس برای تایپ کردن کدهای یک شیت از یک سایت شاید مورد نیاز باشد تا یکسری هزار خط کد بنویسد. این کدها هر کدام عملکردها و و ظایف معین ولی متفاوتی دارا هستند. بعضاها مربوط می شوند به درخواستهایی از سرور و برخیها را مرورگر طراحی سایت اخصاصی اعمال مینماید.
برای استفاده کننده و اپلیکیشننویس اصلی میباشد که تمامیی کدها خیلی سریع جاری ساختن شوند و برگه تماما بار گذاری خواهد شد. شاید مخاطب از وب سایت درخواستی داشته باشد یا این که بخواهد کاری در وب سایت اعمال دهد. پس شاید اجرای بعضا کدها نیازمند اخذ سودای از سرور و تعدادی رفتوبرگشت فی مابین سرور و کاغذ باشد. پس، بههمینادله، ترتیب اجرای کدها اصلی میباشد. خیلی از کدها بایستی هم زمان باهم (همگام) اعمال شوند تا مشکلی پیش نیاید و استفاده کننده چشم به راه چیزی نشود.
Synchronous Programming (نرمافزار نویسی همگام)
اپلیکیشننویسی همگام یا این که عملکردهای همگام (Synchronous Operations) یا این که Blocking Programming هنگامی حادثه میفتد که اجرای بی نقص کدهایی (عملکردهایی) جلوی اجرای بقیه کدها را میگیرد. یعنی فرمان اجرای هیچ کد دیگری عملی نمی شود تا یک عمل (Task) به اتمام برسد. در صورتیکه به نمونه خزانه برگردیم، شما بایستی حوصله نمایید تا شغل های ۴ نفر جلویی شما به اتمام برسد و سپس دفعه به شما رسد. آن ۴ نفر جلویی شیوه شمارا بستهاند (بلاک کردهاند). ولی اپلیکیشننویسی همگام کاربردهای خودش را دارااست. مهمترین کاربردش در ساختن Real-time Systems میباشد. گویشهای Argus, Signal and Lustre از لهجههای خاص نرم افزارنویسی همگام میباشند. بقیه گویشها مثل جاوا و پایتون و #C نیز همگام می باشند البته شیوههایی وجود دارااست که بشود کدهای ناهمگام با آنان نوشت.
Asynchronous Programming (اپ نویسی ناهمگام)
اپلیکیشننویسی ناهمگام یا این که عملکردهای ناهمگام (Asynchronous Operations) یا این که Nonblocking Programming نقطهی مقابل اولین میباشد. یعنی یک سری کوشش و کد باهم میتوانند جاری ساختن شوند و خللی در عمل جریان مهم اجرای کدهای نوشته هم ساخت نکنند. دراینجا دیگر دفعه یا این که ترتیب معنی ندارد. گروه کدها بهموازات هم انجام می شوند. مهمترین کاربرد این نوع از اپنویسی هنگامی میباشد که درخواستی از مقرداده (Database) می گردد و فیضای بایستی از آن گرفت. بار گذاری سایری کاغذ و اجرای بقیه کدها متوقف نمیماند تا آن سود رسد و آن عمل به اتمام برسد. فقط لهجه نرمافزارنویسی که ناهمگام میباشد و درهنگام ایفا در مرورگر ناهمگام فعالیت مینماید، گویش جاوااسکریپت میباشد.
جاوااسکریپت و اپ نویسی Asynchronous
جاوااسکریپت (JavaScript or JS) گویش قوی و توانمندی میباشد که کتابخانههای متعددی داراست. فریمورکهای قدرتمندی هم داراست. یکیاز مشهورترین فریمورکهای سمت سرور این لهجه که آنهم به شما قابلیت نرمافزارنویسی ناهمگام میدهد، قاب ورک Node میباشد. ناهمگامی در جاوااسکریپت بدین عامل میباشد که اپلیکیشننویس قادر است ترتیب اجرای توابع (Functions) را در دست گرفتن نماید. یعنی توابع براساسی که نوشته می شوند ممکن میباشد خوانده نشوند. جاوااسکریپت دو قابلیت و امکان اساسی برای در دست گرفتنکردن فرصت اجرای توابع به اپنویس میدهد.
اولین قابلیت و امکان Callbacks در جاوااسکریپت میباشد. اپلیکیشننویس با این قابلیت و امکان میتواند زمانی تابعی جاری ساختن شد از آن تابع بخواهد تا اجرای تابع دیگری را فراخواند (یعنی اجرای دومین آغاز خواهد شد). قابلیت دوم به Async در JS یا این که Async/Await پر اسم و رسم میباشد که با امداد JS Promises عملی می شود.
Async/Await در جاوا اسکریپت
در جاوااسکریپت شیئ (Object) بهاسم Promise وجود داراست که می گردد در درونش دو گروه کد را مکان اعطا کرد. کدهایی که بایستی انجام شوند و فیضای را نتایج نمایند (Producing code) و کدهایی که به آن سود نیاز داراهستند و معطل تصاحب کردن آن سود، که یا این که توفیقآمیز میباشد یا این که یک اشتباه، میمانند (Consuming code).
زمانی کلمه و واژهی Async قبلیاز تابعی نوشته می شود، آن تابع بایستی یک Promise را اعمال نماید و سوداش که معین شد، براساس آن سود کاری اجرا دهد. ولی هنگامی کلمه و واژهی Await گذشتهاز تابعی نوشته میگردد، آن تابع می بایست درانتظار باشد تا فیضی یک شئ مشخص و معلوم گردد و بعد از آن جاری ساختن خواهد شد. برای مثال، اپلیکیشننویس قادر است به دو تابع مجال بدهد. یعنی کد را اینطور بنویسد که تابع دوم ۵ ثانیه بعداز معینشدن سودی Promise اعمال گردد.
گردآوریبندی و فیضگیری
۱. لهجههای نرمافزارنویسی صرفا برای ساخت سایت به کار گیری نمی شوند و کاربردهای مختلفی دارا هستند. بههمینعامل، بایستی خصوصیتهای مختلفی داشته باشند.
۲. لهجههای اپلیکیشننویسی علیالاصول همگام می باشند. البته نرم افزارنویسی همگام در اینترنت طراحی صفحه مشکلاتی برای نرمافزارنویس و مخاطب تولید مینماید. بههمینعامل، زبانی مثل جاوا اسکریپت که اصولا ناهمگام میباشد، برای طراحی وب بسیار اصلی می گردد.
۳. در گویش جاوا اسکریپت تیمای از تجهیزات به کدنویس این توان را میدهد که فرصت اجرای به طور تقریب هر چیزی را تماما در دست گرفتن نماید.
۴. اما قابلیت Async/Await در گویشهای دیگر (مثل پایتون و #C) نیز پیشبینی گردیدهاست.
۵. قطعهکدهایی که در متن نهاده گردیده از وبسایت آموزشی W3schools برداشته گردیدهاست. میتوانید برای رسیدگیی بیشتر از این وبسایت و همینطور تارنما Developer.mozilla.org استعمال نمائید.
۶. ناهمگامبودن JavaScript یک کدام از خصوصیتهایی میباشد کهاین لهجه را کاربردی مینماید. اپنویس شاید نیازی به یادگیری لهجههای توسعه یافتهی دیگر نداشته باشد اما مسلما به جاوا اسکریپت نیاز داراست. بههمینعامل، یادگرفتن جاوااسکریپت از مهمترین سرفصلهای زمان یادگرفتن طراحی وب سایت میباشد.

راهنمای کاربردی پیاده سازی تارنما خوشگل (قسمت نهایی)